PW6 - Python for Data Analysis

by Marius Ortega et Samuel Pariente

1 - Libraries

On importe les librairies nécessaires pour le projet.

2 - Dataset loading

On commence par observer les données.

Sur Kaggle on recupère les descriptions des colonnes.

description of credits' columns

description of titles' columns

3 - Dataset cleaning and ordering

Nous allons d'abord étudier les informations générales sur notre dataframe.

Ensuite, nous allons traiter et analyser les objets nan. Nous calculons les pourcentages de nan par colonne dans chaque dataframe.

3.1 - Cleaning and structuration of Titles

Pour corriger les 12,56% de noms de personnages qui ne sont pas mentionnés dans l'ensemble des données, nous les remplacerons par "Non mentionné".

Maintenant, nous pouvons supprimer les doublons dans ce dataframe, s'il y en a.

Nous vérifions que les titres sont nettoyés des valeurs nan. Nous vérifions également ses informations générales

3.2 - Cleaning and Structuration of Credits

Nous remarquons que les saisons ont 64% d'objets nan. C'est tout à fait normal. En fait, cette colonne est égale au nombre de saisons si l'observation est une série et Nan si l'observation est un film. Ainsi Nan peut être remplacé par 0 car un film possède 0 saisons.

Nous allons maintenant traiter la deuxième colonne la plus problématique en proportion de Nan, age_certification. Les valeurs nan sont celles qui n'ont pas de certification. Cela signifie que nous pouvons les remplacer par "no_certif" par exemple.

Nous remarquons également que les valeurs de certification de l'âge ne sont pas explicites. Mettons en correspondance de nouvelles valeurs pour cette colonne.

Source : https://gopioneer.com/wp-content/uploads/2017/01/dtv_movieratings.pdf

Si nous voulons revenir en arrière, nous créons le mapping inverse.

Ensuite, nous pouvons appliquer le mapping.

Maintenant, nous étudions les rubriques liées à imdb.

imdb_id n'est lié à aucune autre colonne des dataframes crédits ou titres. Elle n'apporte donc pas beaucoup d'informations et nous pouvons simplement la supprimer.

Nous continuerons à travailler sur les variables imbd plus tard dans ce notebook.

La colonne description est en quelque sorte similaire aux autres colonnes qualitatives. Lorsque la description est nulle, nous pouvons simplement remplacer la cellule par "No description" par exemple.

Quand on regarde les données de la colonne title, on peut observer que 0,02% des données sont des nan, ce qui est un très faible pourcentage de la data. De plus, un film sans titre n'est pas intéressant. Ainsi, nous supprimons les 0,02% de Nan de cette colonne.

Nous remarquons que les colonnes pays et genre sont des listes. Cela les rend difficiles à utiliser dans nos opérations. Nous décidons de ne garder que le premier élément de chaque liste, le considérant comme le plus important. De plus, nous supprimons toutes les lignes qui n'ont pas de pays de production.

Maintenant, nous faisons correspondre le nom des pays avec leur code pays.

Source : https://gist.github.com/ssskip/5a94bfcd2835bf1dea52

3.3 - Vectorisation

Nous observons des NaN dans les colonnes suivantes: imdb_score, imdb_votes, tmdb_popularity, tmdb_score. Pour corriger les NaN, nous allons les predire. Le problème majeur de cette prediction est le fait que les genres sont sous formes de texte. Pour remedier a cela nous allons load un modèle de Vectorisation entrainé sur des articles Google et ainsi vectoriser les genres.

On obtient donc une DataFrame avec 300 colonnes par genre: ce sont les vecteurs.

3.3.1 : KNN

Pour faire la prediction nous allons utiliser un KNN.

On commence par diviser la data en X et Y, tel que X sont les prédicteurs et Y les valeurs prédites.

Ici, nous avons fini de prédire notre premiere colonne.

La deuxieme colonne à prédire est nettoyée de ces nan, nous pouvons passer à la 3ème.

Enfin, nous passons à la 4ème.

On obtient donc une dataframes avec les 4 colonnes à prédire sans aucun NaN :

Maintenant, éliminons les doublons s'il y en a dans le dataframe credits.

Pour terminer cette partie, nous vérifions qu'il ne reste aucune valeur nan dans credits.

4 - Visualisations univariées

4.1 - Titles : Univarié

Tout d'abord, nous aimerions examiner la répartition des rôles dans l'ensemble de données.

Les autres colonnes de cet ensemble de données ont trop de résultats possibles pour permettre des visualisations univariées intéressantes.

4.2 - Credits : Univarié

Regardons le nombre de films sortis par an.

De 1945 à 2020, le nombre de films a augmenté de façon exponentielle. La chute brutale en 2020 est certainement due au gel de l'économie mondiale par le covid.

Maintenant, nous pouvons examiner la répartition des colonnes qualitatives telles que le type, la certification d'âge et les genres.

Les États-Unis sont fortement dominants (Hollywood) suivis par l'Inde (Bollywood), essayons de les retirer du graphique.

Changeons maintenant de sujet et visulisons les données quantitatives. Nous allons d'abord nous concentrer sur les variables imdb et timbd.

Traçons maintenant ces variables avec des histogrammes.

Nous pouvons faire la même chose pour les variables tmdb.

Comme pour les variables imdb, créons des histogrammes de ces deux colonnes.

5 - Visualisations multivariées

5.1 - Etude des pays

Dans un premier temps, regardons le nombre de films fait par chaque pays depuis 1945.

Maintenant regardons le nombre de film par année pour chaque pays depuis 1945.

5.2 - Etude des genres

Maintenant, observons la note imdb et tmdb par genre.

Nous nous intéressons au nombre de films par genre.

Ensuite, nous pouvons observer la proportion de chaque genre et leur film associé.

Nous nous penchons sur la récurrence des acteurs dans les différents genres.

On observe les 10 acteurs les plus constant dans les genres (Fun fact, Barack Obama est l'acteur le plus récurent des documentaires).

On affiche ensuite les 10 acteurs ayant joué dans le plus de genres.

5.3 - Etude de Série vs film

Pour les prochains graphiques nous allons étudier les valeurs des séries et des films de manière séparée.

La courbe d'évolution de la note Imdb montre un renversement des series et film depuis une quinzaine d'année.

On affiche ensuite la courbe d'évolution du temps de série/films en fonction des années

On observe une convergence entre la durée moyenne des séries qui augmente et celle des films qui diminue.

On va s'interesser ensuite au graph de la note imdb par rapport a l'année et à la quantité de séries/films.

On observe que le graph n'est pas très lisible, on le trace d'une autre maniere.

Le scatter plot 3D est plus lisible que le précédent, cependant il est préférable de modéliser la 3ème dimension avec des couleurs.

6 - Problème : Comment évolue la qualité des séries et films au cours du temps en fonction de la migration des acteurs et de la note utilisateur ?

6.1 - Indicateur de migration

Dans un premier temps, on observe les flux des acteurs/réalisateurs entre les films et les series au cours du temps.

A partir du graphique précédent, on remarque que la proportion d'acteurs choisant de jouer dans des films baisse avec les années. On créer un indicateur pour signifier ce ratio de film ou de série faits par les acteurs/réalisateurs chaque année.

6.2 - Création d'un indicateur de préférence utilisateur

On crée un indicateur qui va prendre en compte les quatres colonnes suivantes: imdb_score, imdb_votes, tmdb_popularity, tmdb_score.

Dans un premier temps on utilise le Bayesian Average decrit ici: https://www.algolia.com/doc/guides/managing-results/must-do/custom-ranking/how-to/bayesian-average/

On additionne les 3 colonnes en prenant le log de tmdb_popularity pour avoir un distribution normale.

Pour finir avec ce nouvel indicateur, nous pouvons voir l'évolution de la qualité des séries et films au cours du temps.

7- Conclusion

Rappel de la problématique: Comment évolue la qualité des séries et films au cours du temps en fonction de la migration des acteurs/réalisateurs et de la note utilisateur ?

Nous avons commencer par étudier la migration des acteurs/réalisateurs de film vers série nous avons observé une tendance exponentielle de migration ce qui est un gage de qualité des séries par rapport aux films. De plus, nous avons créé un nouvel indicateur qui a permis d'étudier l'évolution de la préférence des spectateurs des films et séries au file des années. Il en découle que, depuis 1994, les series sont plus apréciées que les films.

Fun fact: 1994 est la date de sortie de la serie Friends

8 - Ce sur quoi nous travaillons encore